package com.wind.lambda;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * Lambda表达式 遍历集合
 *
 * @author Wind
 */
public class LambdaTest08 {
    public static void main(String[] args) {
        List<Star> stars = new ArrayList<>();
        stars.add(new Star(4, "刘德华", true));
        stars.add(new Star(3, "郭富城", true));
        stars.add(new Star(2, "迪丽热巴", false));
        stars.add(new Star(5, "水菜麗", false));
        stars.add(new Star(1, "泷泽萝拉", false));

        // 使用集合工具类，给集合升序排序
        Collections.sort(stars, new Comparator<Star>() {
            @Override
            public int compare(Star o1, Star o2) {
                return o1.getId() - o2.getId(); // 升序
            }
        });
        System.out.println(stars);

        // 使用Lambda表达式 给集合降序排序
        Collections.sort(stars, (o1, o2) -> {
            return o2.getId() - o1.getId();
        });
        System.out.println(stars);
        // 以上代码当然可以简化了，因为方法体只有一条语句
        Collections.sort(stars, ((o1, o2) -> o2.getId() - o1.getId()));
        System.out.println(stars);
        // 集合工具类默认是升序排序，所以升序排序的话 还可以简化
        Collections.sort(stars, (Comparator.comparingInt(Star::getId)));
        System.out.println(stars);
    }
}